import { defineStore } from "pinia";
import api from '@/api'
import { showSuccessToast, showFailToast } from "vant";
interface State {
  items: any[];
  number: number;
  price: number;
}
const useCartStore = defineStore("cart", {
  state: (): State => ({
    items: [],
    number: 0,
    price: 0
  }),
  actions: {
    // 将购物车返回数据赋值给state
    initCartState({items, number, price}: any){
      this.items = items;
      this.number = number;
      this.price = price;

    },
    // 加入购物车
    addCart(params:{goodsId: string|number;number:number}){
      api.addCart(params).then(res => {
        if (res.data.code === 0) {
          this.initCartState(res.data.data)
          showSuccessToast('加入购物车成功')
        } else {
          showFailToast('加入购物车失败')
        }
        
      })
    },
    // 获取购物车中的数据
    fetchCartInfo(){
      api.fetchCartInfo().then(res => {
        if (res.data.code === 0) {
          this.initCartState(res.data.data)
        }
        
      })
    },
    // 修改购物车商品购买数量
    changeCartNumber(params: {key: string;number: number}){
      api.changeCartNumber(params).then(res => {
        if (res.data.code === 0) {
          this.initCartState(res.data.data)
          showSuccessToast('商品数量修改成功')
        } else {
          showFailToast('商品数量修改失败')
        }
        
      })
    },
    // 修改购物车商品选中状态
    changeCartSelected(params: {key: string;selected: boolean}){
      api.changeCartSelect(params).then(res => {
        if (res.data.code === 0) {
          this.initCartState(res.data.data)
          showSuccessToast('商品选中状态修改成功')
        } else {
          showFailToast('商品选中状态修改失败')
        }
        
      })
    },
    // 删除购物车商品
    delCartItem(params: {key: string}){
      api.delCartItem(params).then(res => {
        if (res.data.code === 0) {
          this.initCartState(res.data.data)
          showSuccessToast('删除商品成功')
        } else if(res.data.code === 700) {
          showSuccessToast('删除商品成功')
          this.initCartState({
            items: [],
            price: 0,
            number: 0
          })
        } else {
          showFailToast('删除失败')
        }
        
      })
    }
  }
  
})

export default useCartStore